package tut.fileLock.exclusive;

import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;

public class ExclusiveTest3{
	public static void main(String[] args) {

		// リスト 3 lockメソッドの使用例 (排他ロック)

		String filename = "/var/adptg/tets.txt";

		FileLock lock = null;
		FileChannel channel = null;
		try {
			channel = new FileOutputStream(filename).getChannel();

			// ロックをかける。書き込むバイト数が未知なので、sizeは多めにする
			// FileLock lock = channel.lock(); でも OK
			lock = channel.tryLock(0, Long.MAX_VALUE, true);
			if(lock!= null) {
				System.out.println("lock test 3 locked");
			} else {
				System.out.println("lock test 3 null");
			}

			// 出力処理

		} catch (Exception e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} finally {
		}
		try {
			channel.close();
			lock.release(); // ロックの解放
		} catch (Exception e2) {
			// TODO: handle exception
		}
	}
}
